package com.example.jsoup.kuang.question.test;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class IndexData {

    public static void main(String[] args) throws Exception {
        String addressUrl = "https://www.kczg.org.cn/index/ajaxGetDemand?demand_type=2&industry_id=2&field_id=2&date_type=0&title=0&province_id=0&first_code=0&size_type=2&page=";

//        IndexData.getQuestionDataUrl(addressUrl, 1);
        IndexData.getQuestionDataUrlReturnMapList(addressUrl, 1);

    }


    /**
     * @param addressUrl 【技术需求 addressUrl= "https://www.kczg.org.cn/index/ajaxGetDemand?demand_type=2&industry_id=2&field_id=2&date_type=0&title=0&province_id=0&first_code=0&size_type=2&page="
     *                   服务需求 addressUrl= "https://www.kczg.org.cn/index/ajaxGetDemand?demand_type=3&industry_id=3&field_id=3&date_type=0&title=0&province_id=0&first_code=0&size_type=2&page="
     *                   <p>
     *                   人才需求 addressUrl= "https://www.kczg.org.cn/index/ajaxGetDemand?demand_type=1&industry_id=1&field_id=1&date_type=0&title=0&province_id=0&first_code=0&size_type=2&page="】
     * @param pageIndex  【页码 从 1 开始】
     * @return
     */
//    public static List<IdAndUrl> getQuestionDataUrl(String addressUrl, int pageIndex) {
//
////        List<String> urlList = new ArrayList<>();  // 每一页列表中详细页的url列表
////
////        List<String> idList = new ArrayList<>();
//
//        List<IdAndUrl> idAndUrlList = new ArrayList<>();
//
//        // 创建Httpclient对象
//        CloseableHttpClient httpClient = HttpClients.createDefault();
//
////        String str = "https://www.kczg.org.cn/index/ajaxGetDemand?demand_type=2&industry_id=2&field_id=2&date_type=0&title=0&province_id=0&first_code=0&size_type=2&page=" + pageIndex;
//
//        // 问题库 技术需求 列表数据
//        HttpPost httpPost = new HttpPost(addressUrl + pageIndex);
//
//        // 请求头 user-agent
//        httpPost.addHeader("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.366");
//
//        // 响应
//        CloseableHttpResponse response = null;
//
//        try {
//            // 使用httpClient发起请求 获取 response
//            response = httpClient.execute(httpPost);
//
//            // 解析响应
//            if (response.getStatusLine().getStatusCode() == 200) {
//                String content = EntityUtils.toString(response.getEntity(), "utf8");
//
////                System.out.println("\n 请求结果返回hhhhh::::  \n " + content + "\n");
//
//                // 把字符串转换为 json 对象
//                JSONObject jsonObject = JSON.parseObject(content);
//
//                // 通过已知的 key 键，获取 value 值
//                String data = jsonObject.get("data").toString(); // data 列表字符串
//
//                // 把 data 字符串列表 转为 类似 List 类型的数组
//                JSONArray jsonArray = new JSONArray(data);  // 使用这个 import org.json.JSONArray;
//
//                for (int i = 0; i < jsonArray.length(); i++) {
//                    IdAndUrl idAndUrl = new IdAndUrl();
//
//                    String url = jsonArray.getJSONObject(i).get("url").toString();
//                    String id = jsonArray.getJSONObject(i).get("id").toString();
//
//                    idAndUrl.setId(id);
//                    idAndUrl.setUrl(url);
//
////                    urlList.add(url);
////                    idList.add(id);
//
//                    idAndUrlList.add(idAndUrl);
//                }
//
////                System.out.println("\n列表列表列表列表：：：：\n" + urlList);
//////                System.out.println("\n列表列表列表列表：：：：\n" + idList);
//
//                System.out.println("\n列表列表列表列表：：：：\n" + idAndUrlList);
//
//                System.out.println();
//                System.out.println();
//                System.out.println();
//
//            }
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        } finally {
//
//            try {
//                // 关闭httpClient
//                httpClient.close();
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//            try {
//                // 关闭response
//                response.close();
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//
//        return idAndUrlList;
//    }

    public static List<Map<String, String>> getQuestionDataUrlReturnMapList(String addressUrl, int pageIndex) {

        List<Map<String, String>> idAndUrlMapList = new ArrayList<>();

        // 创建Httpclient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();

//        String str = "https://www.kczg.org.cn/index/ajaxGetDemand?demand_type=2&industry_id=2&field_id=2&date_type=0&title=0&province_id=0&first_code=0&size_type=2&page=" + pageIndex;

        // 问题库 技术需求 列表数据
        HttpPost httpPost = new HttpPost(addressUrl + pageIndex);

        // 请求头 user-agent
        httpPost.addHeader("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.366");

        // 响应
        CloseableHttpResponse response = null;

        try {
            // 使用httpClient发起请求 获取 response
            response = httpClient.execute(httpPost);

            // 解析响应
            if (response.getStatusLine().getStatusCode() == 200) {
                String content = EntityUtils.toString(response.getEntity(), "utf8");

//                System.out.println("\n 请求结果返回hhhhh::::  \n " + content + "\n");

                // 把字符串转换为 json 对象
                JSONObject jsonObject = JSON.parseObject(content);

                // 通过已知的 key 键，获取 value 值
                String data = jsonObject.get("data").toString(); // data 列表字符串

                // 把 data 字符串列表 转为 类似 List 类型的数组
                JSONArray jsonArray = new JSONArray(data);  // 使用这个包的 import org.json.JSONArray;

                for (int i = 0; i < jsonArray.length(); i++) {
                    Map<String, String> map = new HashMap<>();

                    String id = jsonArray.getJSONObject(i).get("id").toString();
                    String url = jsonArray.getJSONObject(i).get("url").toString();

                    map.put("id", id);
                    map.put("url", url);

                    idAndUrlMapList.add(map);
                }

                System.out.println("\n列表列表列表列表：：：：\n" + idAndUrlMapList);

                System.out.println();
                System.out.println();
                System.out.println();
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {

            try {
                // 关闭httpClient
                httpClient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                // 关闭response
                response.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        return idAndUrlMapList;
    }
}
